# -*- coding: utf-8 -*-
# @Time        : 2021/12/29 15:58
# @Author      : Liuym
# @Email       : 274670459@qq.com
# @File        : insert_data.py
# @Project     : noaa
# @Description : 辅助函数库

import csv
import pymysql
import os
from config import *
db = pymysql.connect(host=HOST, user=USER, passwd=PASSWORD, db=DB, charset=CHARSET)
cursor = db.cursor()

# 插入数据库函数，传递参数为csv文件路径
def insert_data_from_csv(csv_file):
    f = csv.reader(open(csv_file,'r'))
    for i in f:
        # csv第一行是字段名，排除掉
        if i[0] == "STATION":
            continue
        sql = 'insert into data values(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)'
        # print(i)
        # 插入到数据库
        try:
            cursor.execute(sql,list(i[n] for n in range(28)))
            db.commit()
        except:
            print('插入数据错误')
      
# 遍历接压缩后的文件夹，获取csv文件，如果符合条件则把文件名作为参数传递给函数insert_data_from_csv插入数据
def insert_data():
    # 遍历文件夹tar_gz
    for tar_gz_dir in os.listdir('tar_gz'):
        # 如果是文件夹则继续遍历即只遍历下面的文件夹，排除压缩文件
        if os.path.isdir(f'tar_gz/{tar_gz_dir}'):
            # 排除压缩文件继续遍历文件夹,下面的遍历文件列表为csv文件
            for tar_gz_file in os.listdir(f'tar_gz/{tar_gz_dir}'):
                # 切割文件，如果csv文件是以5开头则代表是中国的气象站，则调用插入函数插入，否则不处理
                if f'tar_gz/{tar_gz_dir}/{tar_gz_file}'.split('/')[2][0] == '5':
                    print('是中国的气象站网数据库插入数据%s'%(f'tar_gz/{tar_gz_dir}/{tar_gz_file}'))
                    insert_data_from_csv(f'tar_gz/{tar_gz_dir}/{tar_gz_file}')
                else:
                    print('外国气象站数据不处理')
            
insert_data()